home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / database / postgres / appgen-0.2-a / appgen-0 / AppGEN / apps / pim.app < prev    next >
Encoding:
Text File  |  1996-07-11  |  7.3 KB  |  259 lines

  1. INCLUDE "global.app"
  2.  
  3. [MODULE pim]
  4. SET default_process AS "logon_screen"
  5.  
  6. [PROCESS logon_screen]
  7. DISPLAY login
  8.  
  9. [FORM login]
  10. SET title AS "Personal Information Manager"
  11. SHOWLN "<H1>Please Login:</H1>"
  12. DEFINE FORM {
  13.     user_id : 8 : "Login Name:" : TEXT
  14.     password : 8 : "Password" : PASSWORD
  15. }
  16. DEFINE TOOLBAR {
  17.     "LOGON" : ALL : PROCESS "logon"
  18.     "CHANGE_PASSWORD" : ALL : PROCESS "ch_passwd"
  19. }
  20.  
  21. [PROCESS logon]
  22. DATA users
  23. INT no_rows
  24. SQL "SELECT * FROM users WHERE username='$input.user_id' AND password='$input.password';" TO users
  25. ROWS users TO no_rows
  26. IF no_rows < 1 THEN BEGIN
  27.     DISPLAY login WITH input ERROR "LOGIN FAILURE" ON 1
  28.     END
  29. PROCESS main
  30.  
  31. [PROCESS ch_passwd]
  32.  
  33. [PROCESS main]
  34. DATA results
  35. SQL "SELECT priority + 1 as p, job_id, name, date, time FROM todo WHERE user_id='$input.user_id' AND status=0 ORDER BY p, date, time;" TO results
  36. OUTPUT todo_list WITH results
  37.  
  38. [OUTPUT todo_list]
  39. SET title AS "Personal Information Manager"
  40. SET type AS screen
  41. PROCESS username
  42. DEFINE OUTPUT {
  43.     priority : CENTER : "Priority"
  44.     job_id : LEFT : "Job no."
  45.     name : LEFT : "Job"
  46.     date : LEFT : "Date"
  47.     time : LEFT : "Time"
  48.     } LINK TO PROCESS amend WITH VALUE job_id
  49. PROCESS links
  50.  
  51. [PROCESS username]
  52. STRING today
  53. SYSDATE today
  54. SHOWLN "<TABLE BORDER=1><TR><TD><APPLET CODEBASE=/ag CODE=clock.class WIDTH=48 HEIGHT=48></APPLET>"
  55. SHOWLN "<TD>"
  56. SHOWLN "<H1>" today "</H1></TABLE><BR>"
  57.  
  58. [PROCESS links]
  59. SHOWLN "<BR><BR>"
  60. SHOWLN "<TD><A HREF=/cgi-bin/contacts?AG_PROCESS=CONTACTS&USER_ID=" input.user_id "><IMG SRC=/ag/notebook.gif BORDER=0>Contacts Database</A>"
  61. SHOWLN "<TD><A HREF=/cgi-bin/pim?AG_PROCESS=NEWTODO&USER_ID=" input.user_id "><IMG SRC=/ag/todo.gif BORDER=0>To Do List</A>"
  62. SHOWLN "</TABLE>"
  63.  
  64.  
  65. [PROCESS amend]
  66. DATA job
  67. SQL "SELECT user_id, job_id, priority, name FROM todo WHERE job_id=$input.job_id;" TO job
  68. DISPLAY todo_edit WITH job
  69.  
  70. [PROCESS newtodo]
  71. DISPLAY todo_edit WITH input
  72.  
  73. [FORM todo_edit]
  74. SET title AS "Add / Amend ToDo Item"
  75. DEFINE FORM {
  76.     user_id : 8 : " " : HIDDEN
  77.     job_id : 10 : " " : HIDDEN
  78.     priority : 2 : "Priority" : CHOICE "1" "2" "3"
  79.     name : 45 : "Job Name"
  80.     }
  81. DEFINE TOOLBAR {
  82.     "COMPLETED" : ALL : PROCESS "complete"
  83.     "ADD_NEW" : ALL : PROCESS "add_new"
  84.     "UPDATE" : ALL : PROCESS "update"
  85.     "DELETE" : ALL : PROCESS "delete"
  86.     "EXIT" : ALL : PROCESS "main"
  87.     }
  88.  
  89. [PROCESS update]
  90. SQL "UPDATE todo SET priority=$input.priority, name= '$input.name' WHERE job_id=$input.job_id;"
  91. PROCESS main
  92.  
  93. [PROCESS add_new]
  94. DATA highest
  95. INT new_job
  96. STRING date
  97. STRING time
  98. SYSDATE date time
  99. SQL "SELECT max(job_id) FROM todo;" TO highest
  100. CALC ( highest.0.0 + 1 ) TO new_job
  101. SQL "INSERT INTO todo (user_id, job_id, priority, status, name, date, time) VALUES ('$input.user_id', $new_job, $input.priority, 0, '$input.name', '$date', '$time');"
  102. PROCESS main
  103.  
  104. [PROCESS delete]
  105. IF NOT ( input.priority = 4 ) THEN BEGIN
  106.     SQL "DELETE FROM todo WHERE job_id=$input.job_id;"
  107. END
  108. PROCESS main
  109.  
  110. [PROCESS complete] 
  111. STRING today
  112. STRING now
  113. SYSDATE today now
  114. IF NOT ( input.priority = 4 ) THEN BEGIN
  115.     SQL "UPDATE todo SET status=1, c_date = '$today', c_time = '$now' WHERE job_id=$input.job_id;"
  116. END
  117. PROCESS main
  118.  
  119. #-------------------------
  120. # Contacts Module 
  121. #-------------------------
  122.  
  123. [MODULE contacts]
  124.  
  125. [PROCESS contacts] 
  126. DISPLAY contact_edit WITH input
  127.  
  128. [FORM contact_edit]
  129. SET title AS "Contacts Database"
  130. DEFINE FORM {
  131.     user_id : 8 : " " : HIDDEN 
  132.     contact_id : 8 : " " : HIDDEN
  133.     name : 45 : "Contact Name: " 
  134.     company : 45 : "Company Name: "
  135.     addr1 : 45 : "Address: "
  136.     addr2 : 30 : " " 
  137.     addr3 : 30 : " "
  138.     addr4 : 30 : " " 
  139.     tel : 20 : "Telephone Number: "
  140.     fax : 20 : "Fax Number: "
  141.     email : 45 : "E-Mail Address: "
  142.     remark1 : 60 : "Remarks: "
  143.     remark2 : 60 : " " 
  144.     scope : 1 : "Private or Public:" : CHOICE "PUBLIC" "PRIVATE"
  145. }
  146. DEFINE TOOLBAR {
  147.     "ADD" : ALL : PROCESS "add"
  148.     "FIND" : ALL : PROCESS "find"
  149.     "UPDATE" : DATA : PROCESS "update"
  150.     "DELETE" : DATA : PROCESS "delete"
  151.     "CLEAR" : DATA : PROCESS "clear"
  152.     "EXIT" : ALL : MODULE "pim" PROCESS "main" VALUE "user_id"
  153.     }
  154.  
  155. [PROCESS add]
  156. DATA highest
  157. INT new_job
  158. SQL "SELECT max(contact_id) FROM contacts;" TO highest
  159. CALC ( highest.0.0 + 1 ) TO new_job
  160. SQL "INSERT INTO contacts (user_id,contact_id,name,company,addr1,addr2,addr3,addr4,tel,fax,email,remark1,remark2,scope) VALUES ('$input.user_id',$new_job,'$input.name','$input.company','$input.addr1','$input.addr2','$input.addr3','$input.addr4','$input.tel','$input.fax','$input.email','$input.remark1','$input.remark2',$input.scope);"
  161. PROCESS clear
  162.  
  163. [PROCESS find]
  164. DATA results
  165. INT and
  166. STRING query
  167. MOVE "SELECT contact_id, name, company, tel FROM contacts WHERE (user_id=" TO query
  168. APPEND query "'" input.user_id "' OR scope=0) "
  169. MOVE 1 TO and
  170. IF NOT BLANK(input.name) THEN BEGIN
  171.     IF and = 1 THEN APPEND query " AND "
  172.     APPEND query "name like '%" input.name "%' "
  173.     MOVE 1 TO and
  174.     END
  175. IF NOT BLANK(input.company) THEN BEGIN
  176.     IF and = 1 THEN APPEND query " AND "
  177.     APPEND query "company like '%" input.company "%' "
  178.     MOVE 1 TO and
  179.     END
  180. IF NOT BLANK(input.addr1) THEN BEGIN
  181.     IF and = 1 THEN APPEND query " AND "
  182.     APPEND query "addr1 like '%" input.addr1 "%' "
  183.     MOVE 1 TO and
  184.     END
  185. IF NOT BLANK(input.addr2) THEN BEGIN
  186.     IF and = 1 THEN APPEND query " AND "
  187.     APPEND query "addr2 like '%" input.addr2 "%' "
  188.     MOVE 1 TO and
  189.     END
  190. IF NOT BLANK(input.addr3) THEN BEGIN
  191.     IF and = 1 THEN APPEND query " AND "
  192.     APPEND query "addr3 like '%" input.addr3 "%' "
  193.     MOVE 1 TO and
  194.     END
  195. IF NOT BLANK(input.addr4) THEN BEGIN
  196.     IF and = 1 THEN APPEND query " AND "
  197.     APPEND query "addr4 like '%" input.addr4 "%' "
  198.     MOVE 1 TO and
  199.     END
  200. IF NOT BLANK(input.tel) THEN BEGIN
  201.     IF and = 1 THEN APPEND query " AND "
  202.     APPEND query "tel like '%" input.tel "%' "
  203.     MOVE 1 TO and
  204.     END
  205. IF NOT BLANK(input.fax) THEN BEGIN
  206.     IF and = 1 THEN APPEND query " AND "
  207.     APPEND query "fax like '%" input.fax "%' "
  208.     MOVE 1 TO and
  209.     END
  210. IF NOT BLANK(input.email) THEN BEGIN
  211.     IF and = 1 THEN APPEND query " AND "
  212.     APPEND query "email like '%" input.email "%' "
  213.     MOVE 1 TO and
  214.     END
  215. IF NOT BLANK(input.remark1) THEN BEGIN
  216.     IF and = 1 THEN APPEND query " AND "
  217.     APPEND query "remark1 like '%" input.remark1 "%' "
  218.     MOVE 1 TO and
  219.     END
  220. IF NOT BLANK(input.remark2) THEN BEGIN
  221.     IF and = 1 THEN APPEND query " AND "
  222.     APPEND query "remark2 like '%" input.remark2 "%' "
  223.     MOVE 1 TO and
  224.     END
  225. APPEND query ";"
  226. SQL query TO results
  227. OUTPUT find_list WITH results
  228.  
  229. [PROCESS update]
  230. SQL "UPDATE contacts SET name='$input.name', company='$input.company', addr1='$input.addr1', addr2='$input.addr2', addr3='$input.addr3', addr4='$input.addr4', tel='$input.tel', fax='$input.fax', email='$input.email', remark1='$input.remark1', remark2='$input.remark2', scope=$input.scope WHERE contact_id=$input.contact_id;"
  231. PROCESS clear
  232.  
  233. [PROCESS delete]
  234. SQL "DELETE FROM contacts WHERE contact_id = $input.contact_id;"
  235. PROCESS clear
  236.  
  237. [PROCESS clear]
  238. DATA user
  239. SQL "SELECT username, 0, '','','','','','','','','','','','' FROM users WHERE username = $input.user_id;" TO user
  240. DISPLAY contact_edit WITH user
  241.  
  242. [OUTPUT find_list]
  243. SET title AS "Search Results"
  244. SET type AS screen
  245. DEFINE OUTPUT {
  246.     contact_id : LEFT : "Record"
  247.     name : LEFT : "Name"
  248.     company : LEFT : "Company"
  249.     tel : LEFT : "Telephone"
  250. } LINK TO PROCESS find_display WITH VALUES contact_id
  251.  
  252. [PROCESS find_display]
  253. DATA results
  254. SQL "SELECT '$input.user_id', contact_id, name, company, addr1, addr2, addr3, addr4, tel, fax, email, remark1, remark2, scope FROM contacts WHERE contact_id = $input.contact_id;" TO results
  255. DISPLAY contact_edit WITH results
  256.  
  257. [END]
  258. #------------------------------------
  259.